package com.meituan.sqt.model.order.orig;

import lombok.Data;

import java.util.List;

/**
 * @author: chenbocheng02@meituan.com
 * @date: 2022/2/10 8:11 下午
 * @description:
 */
@Data
public class HotelOrderInfo {
    /**
     * 订单基本信息
     */
    private HotelOrderBaseInfo hotelOrderBase;
    /**
     * 订单预定信息信息
     */
    private List<HotelOrderGuestInfo> guests;
    /**
     * 入住人信息
     */
    private HotelOrderAptInfo aptInfo;
    /**
     * 间夜信息
     */
    private List<HotelRoomNightInfo> roomNights;
    /**
     * 合住人信息
     */
    private HotelShareInfo shareInfo;

    @Data
    public static class HotelOrderBaseInfo {
        /**
         * 业务订单状态
         */
        private Integer orderStatus;
        /**
         * 订单金额，单位分
         */
        private Long orderAmount;
        /**
         * 发票类型 1 普票 2 专票
         */
        private Integer invoiceType;
        /**
         * 是否超标 true 超标
         */
        private boolean isExceeded;
        /**
         * 超标原因
         */
        private String exceedReason;
        /**
         * 是否商务优选 true 优选
         */
        private Boolean isBusinessFirst;
        /**
         * 是否协议酒店 true 协议酒店
         */
        private Boolean isAgreement;
        /**
         * 是否前台拿票 true 前台拿票
         */
        private Boolean isReceptionInvoice;
        /**
         * 是否海外订单 true 是 false 国内订单，目前只有国内酒店
         */
        private Boolean isOverseal;
        /**
         * 酒店费用类型 0预付 2现付
         */
        private Integer hotelPayType;
        /**
         * 币种
         */
        private String currency;
        /**
         * 快递金额，单位分
         */
        private Integer expressAmount;
        /**
         * 房间数
         */
        private Integer roomCount;
        /**
         * 间夜数
         */
        private Integer roomNightCount;
        /**
         * 下单时间, 13位时间戳
         */
        private Long createTime;
        /**
         * 修改时间, 13位时间戳
         */
        private Long modifyTime;
        /**
         * 下单渠道
         */
        private String sourceType;
        /**
         * 差标，单位分
         */
        private Integer riskAmount;
        /**
         * 间夜均价, 单位分
         */
        private Integer avgNightAmount;
        /**
         * 开票方
         */
        private String invoiceSubject;

    }

    @Data
    public static class HotelOrderGuestInfo {
        /**
         * 用户类型（ 0 入住人 1 联系人）
         */
        private Integer type;
        /**
         * 姓名
         */
        private String name;
        /**
         * 电话
         */
        private String phone;
        /**
         * 房间号
         */
        private Integer roomIndexId;
        /**
         * 联系邮箱，该字段无值
         */
        private String email;
    }

    @Data
    public static class HotelOrderAptInfo {
        /**
         * 入住时间, 13位时间戳
         */
        private Long checkinTime;
        /**
         * 离店时间, 13位时间戳
         */
        private Long checkoutTime;
        /**
         * 实际离店时间, 13位时间戳
         */
        private Long actualCheckoutTime;
        /**
         * 最晚取消时间
         */
        private Long lastCancelTime;
        /**
         * 酒店类型
         */
        private String hotelType;
        /**
         * 0:国家旅游局颁布五星级证书;1:豪华(按五星级标准建造);2:国家旅游局颁布四星级证书;3:高档(按四星级标准建造);4:国家旅游局颁布三星级证书;5:舒适型(按三星级标准建造);6:经济型;7:低档
         */
        private String hotelStar;
        /**
         * 早餐信息
         */
        private String breakfast;
        /**
         * 酒店所在城市
         */
        private String cityLocationName;
        /**
         * 酒店所在省
         */
        private String provinceLocationName;
        /**
         * 酒店id
         */
        private Long poiId;
        /**
         * 酒店名字
         */
        private String poiName;
        /**
         * 酒店地址
         */
        private String poiAddress;
        /**
         * 产品id
         */
        private Long goodsId;
        /**
         * 房型名字
         */
        private String roomName;
        /**
         * 供应商
         */
        private String partnerName;
        /**
         * 供应商类型
         */
        private String partnerType;
    }

    @Data
    public static class HotelRoomNightInfo {
        /**
         * 间夜日期, 13位时间戳
         */
        private Long bizDay;
        /**
         * 售卖价，单位分
         */
        private Integer soldPrice;
        /**
         * 支付状态
         */
        private Integer payStatus;
        /**
         * 房间号
         */
        private Integer roomIndexId;

    }

    @Data
    public static class HotelShareInfo {
        /**
         * 合住模式（0未拼房，1出差申请拼房）
         */
        private Integer shareMode;
        /**
         * 合住人出差申请单号
         */
        private Long shareApplyId;
        /**
         * 合住人ID
         */
        private Long shareApplyStaffId;
        /**
         * 合住人姓名
         */
        private String shareApplyStaffName;
    }
}
